home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Graphics Programming (2nd Edition) / Visual Basic Graphics Programming 2nd Edition.iso / Src / Ch5 / FrmPrint.frm next >
Text File  |  1999-04-05  |  3KB  |  103 lines

  1. VERSION 5.00
  2. Begin VB.Form FrmPrintForm 
  3.    Caption         =   "FrmPrint"
  4.    ClientHeight    =   3405
  5.    ClientLeft      =   2640
  6.    ClientTop       =   1635
  7.    ClientWidth     =   3405
  8.    LinkTopic       =   "Form1"
  9.    PaletteMode     =   1  'UseZOrder
  10.    ScaleHeight     =   3405
  11.    ScaleWidth      =   3405
  12.    Begin VB.Menu mnuFile 
  13.       Caption         =   "&File"
  14.       Begin VB.Menu mnuFilePrint 
  15.          Caption         =   "&Print"
  16.       End
  17.    End
  18. End
  19. Attribute VB_Name = "FrmPrintForm"
  20. Attribute VB_GlobalNameSpace = False
  21. Attribute VB_Creatable = False
  22. Attribute VB_PredeclaredId = True
  23. Attribute VB_Exposed = False
  24. Option Explicit
  25.  
  26. ' Draw a Bowditch curve on the indicated object.
  27. Private Sub DrawPicture(obj As Object)
  28. Const PI = 3.14159265
  29.  
  30. Dim x As Integer
  31. Dim y As Integer
  32. Dim t As Single
  33. Dim maxt As Single
  34. Dim dt As Single
  35.     
  36.     ' Draw the curve.
  37.     maxt = PI * 8
  38.     dt = maxt / 200
  39.     obj.CurrentX = 0
  40.     obj.CurrentY = 0
  41.     For t = dt To maxt + dt / 2 Step dt
  42.         obj.Line -(Sin(0.75 * t), Sin(t))
  43.     Next t
  44. End Sub
  45.  
  46.  
  47. ' Set the printer's scale properties so it will
  48. ' print the object at the correct size, centered
  49. ' in the printable area.
  50. Private Sub SetPrinterScale(obj As Object)
  51. Dim pwid As Single
  52. Dim phgt As Single
  53. Dim xmid As Single
  54. Dim ymid As Single
  55.         
  56.     ' Get the printer's dimensions in twips.
  57.     pwid = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)
  58.     phgt = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips)
  59.     
  60.     ' Convert the printer's dimensions into the
  61.     ' object's coordinates.
  62.     pwid = obj.ScaleX(pwid, vbTwips, obj.ScaleMode)
  63.     phgt = obj.ScaleY(phgt, vbTwips, obj.ScaleMode)
  64.     
  65.     ' Compute the center of the object.
  66.     xmid = obj.ScaleLeft + obj.ScaleWidth / 2
  67.     ymid = obj.ScaleTop + obj.ScaleHeight / 2
  68.     
  69.     ' Pass the coordinates of the upper left and
  70.     ' lower right corners into the Scale method.
  71.     Printer.Scale _
  72.         (xmid - pwid / 2, ymid - phgt / 2)- _
  73.         (xmid + pwid / 2, ymid + phgt / 2)
  74. End Sub
  75. ' Draw the picture on the form.
  76. Private Sub Form_Paint()
  77.     Cls
  78.     DrawPicture Me
  79. End Sub
  80.  
  81. ' Reset the form scale properties so the picture
  82. ' fills the form.
  83. Private Sub Form_Resize()
  84.     Me.Scale (-1.1, -1.1)-(1.1, 1.1)
  85.     Me.Refresh
  86. End Sub
  87.  
  88.  
  89. ' Draw the picture on the Printer object.
  90. Private Sub mnuFilePrint_Click()
  91.     MousePointer = vbHourglass
  92.     DoEvents
  93.     
  94.     ' Set the printer's scale properties.
  95.     SetPrinterScale Me
  96.  
  97.     ' Draw the picture.
  98.     DrawPicture Printer
  99.     Printer.EndDoc
  100.  
  101.     MousePointer = vbDefault
  102. End Sub
  103.